package com.jintian.smart.base.api.security.entity;

import com.jintian.smart.kernel.core.domain.IEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.beetl.sql.annotation.builder.FillStrategy;
import org.beetl.sql.annotation.builder.UpdateTime;
import org.beetl.sql.annotation.entity.AssignID;
import org.beetl.sql.annotation.entity.Table;

import java.time.LocalDateTime;

/**
 * 操作记录
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "sec_log_operate")
public class OperateLogEntity implements IEntity {
    /**
     * 主键id
     */
    @AssignID("snowid")
    private Long operateLogId;

    /**
     * 操作人id
     */
    private Long operateUserId;

    /**
     * 用户类型
     */
    private Integer operateUserType;

    /**
     * 操作人名称
     */
    private String operateUserName;
    /**
     * 操作模块
     */
    private String module;

    /**
     * 操作内容
     */
    private String content;

    /**
     * 请求路径
     */
    private String url;

    /**
     * 请求方法
     */
    private String method;

    /**
     * 请求参数
     */
    private String param;

    /**
     * 返回值
     */
    private String response;

    /**
     * 客户ip
     */
    private String ip;

    /**
     * 客户ip地区
     */
    private String ipRegion;

    /**
     * user-agent
     */
    private String userAgent;

    /**
     * 请求结果 0失败 1成功
     */
    private Integer successFlag;

    /**
     * 失败原因
     */
    private String failReason;

    /**
     * 更新时间
     */
    @UpdateTime(FillStrategy.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 创建时间
     */
    @UpdateTime(FillStrategy.INSERT)
    private LocalDateTime createTime;
}
